package com.chenchen.tiguan.venue.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.chenchen.tiguan.common.annotation.Excel;
import com.chenchen.tiguan.common.core.domain.BaseEntity;

/**
 * 场馆每周固定开放时段对象 venue_open_time
 * 
 * @author chenchen
 * @date 2025-04-14
 */
public class VenueOpenTime extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 开放时间记录ID */
    private Long openTimeId;

    /** 关联场馆ID（需应用层校验） */
    @Excel(name = "关联场馆ID", readConverterExp = "需=应用层校验")
    private Long venueId;

    @Excel(name = "时间步长", readConverterExp = "单位：分钟")
    private Long slotDuring;

    /** 开放开始时间（如08:00） */
    @Excel(name = "开放开始时间", readConverterExp = "如=08:00")
    @JsonFormat(pattern = "HH:mm")
    private Date startTime;

    /** 开放结束时间（如22:00） */
    @Excel(name = "开放结束时间", readConverterExp = "如=22:00")
    @JsonFormat(pattern = "HH:mm")
    private Date endTime;
    @Excel(name = "开放日", readConverterExp = "2023-6-30")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDay;
    @Excel(name = "结束日", readConverterExp = "2023-6-30")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDay;


    public Long getSlotDuring() {
        return slotDuring;
    }

    public void setSlotDuring(Long slotDuring) {
        this.slotDuring = slotDuring;
    }

    public Date getStartDay() {
        return startDay;
    }

    public void setStartDay(Date startDay) {
        this.startDay = startDay;
    }

    public Date getEndDay() {
        return endDay;
    }

    public void setEndDay(Date endDay) {
        this.endDay = endDay;
    }

    private Venue venue;

    public Venue getVenue() {
        return venue;
    }

    public void setVenue(Venue venue) {
        this.venue = venue;
    }

    public void setOpenTimeId(Long openTimeId)
    {
        this.openTimeId = openTimeId;
    }

    public Long getOpenTimeId() 
    {
        return openTimeId;
    }
    public void setVenueId(Long venueId) 
    {
        this.venueId = venueId;
    }

    public Long getVenueId() 
    {
        return venueId;
    }

    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("openTimeId", getOpenTimeId())
            .append("venueId", getVenueId())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("venue",getVenue())
            .append("startDay", getStartDay())
            .append("endDay", getEndDay())
            .append("slotDuring", getSlotDuring())
            .toString();
    }
}
